查看原文
其他

大厂卡学历?双非二本字节实习面经

fundroid AndroidPub 2022-07-13

最近经常看到诸如《大厂已经不收一本以下的员工了》此类标题的文章,这些文章多是为了兜售课程而贩卖焦虑,因此夸大了学历的重要性。学历确实是评价候选人的一个重要参考,但肯定不是唯一标准,在各种常见招聘渠道中的所占的权重也不同

校招渠道

学历在校招中的作用是很大的。校招的投递量大而窗口期短,需要在短时间内与其他大厂争抢最优秀的人才,没有时间对简历进行一一甄别,在学历上设置门槛可以提升筛选效率。所以双非毕业生想通过校招渠道进入大厂有一定难度。但如果你的简历足够亮眼,并且有靠谱的熟人内推,在内推人的背书下还是有机会进入面试的。

社招渠道

随着工作经验的累积学历的权重越来越小,因此社招是很多双非生进入大厂的主要途径。学历权重的降低意味着工作经历权重的上抬,如果你的上家也是大厂那么面试通过率会高很多,如果你的上家默默无名,那么可以通过 小厂 > 中厂 > 大厂 这样的路线来提升履历上的含金量。当然,如果你对你的能力有信息,可以完全忽视履历、学历的影响,大厂里专科生出身的大牛我也见过好多。

实习渠道

实习是一个性价比很高的选项。一般双非生直接通过校招进入大厂是比较难的,但是如果你有实习经历那就不一样了,特别是开发岗的实习生很高的几率可以自动转正,而实习生招聘又不像校招那样学历卡的那么严,一旦你进入大厂实习,即使最终没能顺利转正,大厂的实习经历也能为日后的校招增加筹码。

相对于校招渠道,内推人的背书在实习渠道中的权重更大,倘若是本部门定向内推,那么进入面试的几率非常高。如果你对自己的学历缺乏信心又想在毕业后进入大厂,那么可以通过参与一些社区或者开源活动结识在大厂工作的朋友,有助于帮你获取一些靠谱的内推资源。

面经分享

最后分享一个前不久进入字节实习的同学的面经。候选人虽然学历不出众,但是在校期间就参与不少社区活动并且有多个作品上架,亮眼的成绩外加靠谱的内推帮他拿下了字节客户端的实习Offer,并即将转正。

  • 作者:zsqw123 (上海工程技术大学)
  • 基本情况:双非学校、非科班生、有三个App上架、目前大三在读
  • 面试流程:4月1日投简历  >  4月中旬参加了笔试  >   4月底收到字节面试邀请  >  5月初一面  >  5月中旬二面  >   5月27日三面 >  6月8日收到Offer

一面(60分钟)

  1. 个人介绍, 什么时候接触的安卓开发, 实习能实习多久, 介绍一下项目

  2. 你说你的软件出现了 OOM, 你怎么解决的? 线上 crash 你是用了什么来分析的?

  3. 这些项目都是怎么来的? 软件中这些内容都怎么来的? 你知道后端怎么来的吗? 后端是不是爬下来的? 每天有多少上传量呢?

  4. 进程和线程有啥区别呢? 为什么要定义出这样的概念来? 有什么用呢?

  5. 哈希表是一个怎样的数据结构? 怎么避免 hash 碰撞? 容量有什么样的特点?

  6. 数据库有了解吗? 索引了解吗? 怎么实现的快速查找? 快速查找的是什么东西?

  7. TCP 协议如何确保稳定传输?

  8. 说一下 Activity 的启动模式

  9. Handler 有了解吗? 说一下原理? 你刚才说到 Looper是个死循环, 那么 messageQueue 没消息的时候那它不还是会循环占用CPU资源吗?

  10. 我看你用过一些开源库比如说 okhttp, 你能说一下原理吗? 分析一下 okhttp 自带的这些 InterceptorChain 是干啥的? 这些 Interceptor 的用途呢?

  11. 你觉得有什么你擅长的但是我还没问的?

  • 那我讲一下屏幕怎么绘制 view 的吧
  • 为什么多次测量性能差了呢? Compose 是怎么解决这些的?
  • onMeasure 里面有个东西叫 MeasureSpec , 你说一下这是一个什么样的数据
算法题:  剑指 Offer 38. 字符串的排列

可能当时没答上来的只有个 HashMap 如何尽可能避免碰撞了

二面(45分钟)

  1. 你主要用的 Java 还是 Kotlin?(我: Kotlin, 面试官:那我问你点 Java 的东西吧)

  2. 怎么创建一个线程? startrun 的区别? 线程和进程的区别? 进程可以没有线程吗?

  3. Android 里面, 主线程的作用是什么? 刷新UI能放到其他线程里面吗? 你说的可以放到其他线程的特殊情况是什么呢? 怎么在子线程弹一个 toast?(提前 Looper.prepare 就行了)

  4. Looper.prepare 做了什么事情呢? 能介绍一下 ThreadLocal 的含义吗, 内部实现原理呢?

  5. Java里我们要访问本地一个文件, 我们应该怎么办? FileInputStream 读取的是二进制流数据, 怎么读取文本呢? 怎么判断读到文件末尾了呢?

  6. 你有没有遇到什么比较难的问题呢? (我: OOM 我项目经常出现(这里想让面试官问我项目, 淦 他不问)) 什么场景会产生 OOM 呢? 什么原因呢? 怎么解决的呢?

  7. 假设一个图片很大, 应该怎么处理呢? (我: Glide/BitmapFactory(这里想让面试官问Glide 但他没问)), 具体是怎么缩放的呢? 假设 BitmapFactory 的 inSampleSize 设置为2的话, 图片内存占用缩小为多少? ARGB_8888 和 RGB_565 的区别?

  8. HTTP 请求常用的header说一下? 常见的状态码说一下? 206是什么? 你用过断点续传吗?

  9. 介绍一下 Jetpack 组件的 ViewModelLiveData 怎么用的, 为什么 ViewModel 可以跟随 Activity 的生命周期而在旋屏时候保留数据呢? (这里说到 ViewModel 我提到了 MVVM 架构, 我想让他问, 但他没问)

  10. 堆内存和栈内存有啥区别呢? (我这里说堆内存是gc的主要区域, 我想让他问我gc, 淦 他没问) 分别存啥?

  11. Java里面 ClassLoder 加载机制是什么? 是先去 parentClassLoder 里面加载还是我自己的里面加载呢? 这样做的目的是什么呢?

  12. Java反射了解吗? 这么去访问一些私有的方法和变量呢?

算法题: 剑指 Offer 54. 二叉搜索树中第K小的元素

刚开始递归遍历子节点个数, 面试官说你这样还会多次遍历啊, 能降低一下复杂度吗? 然后我用了中序遍历; 你这个算法多线程访问可能会出问题啊, 你怎么办, 你不能限制访问者怎么用, 访问者想在多线程去跑这个算法怎么办呢?

一些可能当时没答上来, 答得不好的:
  1. 线程之间共享内存机制呢?

  • 线程之间是共享内存的, 但是线程之间为什么会出现不同步呢?(多线程可见性) 因为除了内存, 数据还会被缓存到CPU寄存器和各级缓存中, 当修改一个变量的时候, 可能会先写到缓存, 稍后再更新到内存
  • ThreadLocal实现原理?

    • 内部维护了一个简易的 hashmap, hahsmap 的 hashcode 是根据当前线程的获取 threadLocal 的顺序, hashcode 是使用 nextHashCode 方法操作一个 atomicInteger , 每次都会递增一个指定的值, 然后每一个线程都会维护一个 ThreadLocalHashMap, ThreadLocal 的 get 和 set 方法实际上就是操作当前线程的 ThreadLocalHashMap 对象

    三面(40分钟)

    1. 介绍一下项目

    2. 介绍一下LaunchMode

    3. Manifest里面activity的process什么用途, 为什么要多进程呢?

    4. 一直在介绍项目...

    5. 反问: 团队对Kotlin支持态度? 对Jetpack的态度呢? 对新人培养呢?

    然后三面就过了, 没啥难的, 问项目那可太简单了, 只要对自己的项目有足够的自信应该都没问题

    最后

    面试中虽然问了不少基础问题,但围绕作者的项目也聊了不少。候选人为了这个实习机会提前做的大量准备,通过开发自己的 APP 有了实战经验,面试中可以重点介绍自己的项目,化被动为主动,相对于面经本身,这种先知先觉才是更值得大家学习和借鉴的地方。

    字节跳动客户端每年都会放出大量实习岗位,如果你像作者一样已经准备好了,那么记得找我内推。



    字节跳动2022届校招已启动,迎使用内推码参加内推

    • 投递时间:8 月 12 日 - 10 月 31 日
    • 校招官网:https://people.bytedance.net/hire/referral/position/campus
    • 校招FAQ:https://jobs.bytedance.com/campus/trends?tab=questionandAnswer
    • 内推码:DVEKPHR

    每人可投递 2 个职位。有关简历投递、岗位、或面试中的有任何问题欢迎找我咨询。期待您的加入!


    加好友拉你进群,技术干货聊不停


    ↓关注公众号↓↓添加微信交流↓


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存